var configPaths = document.getElementsByTagName('script');
var configPath =  configPaths[ configPaths.length - 1 ].src;
configPath = configPath.substring(0, configPath.lastIndexOf("/")+1);
document.write("<script  src='"+configPath+"lib/socket.io/2.2.0/socket.io.js'></script>");


/*异步*/
/*var oScript = document.createElement("script");
oScript.src = configPath+"lib/socket.io/2.2.0/socket.io.js";
document.body.appendChild(oScript);*/

/*
alert(configPath);
*/
var socketioServer; //服务

var SIO_TYPE_PUBLIC = 'public_msg'; //公共通知
var SIO_TYPE_PRIVATE = 'private_msg'; //个人信息
var SIO_TYPE_PUBLIC_WELCOME = 'p_welcome_msg'; //欢迎通知
var SIO_TYPE_CONNECT = 'connect'; //连接
var SIO_TYPE_DISCONNECT = 'disconnect'; //断开连接

var socketioServerInit = function(url, connopts, options, callback) {
	socketioServer = io.connect(url, connopts);
	if (options) {
		if (options[SIO_TYPE_CONNECT] && $.isFunction(options[SIO_TYPE_CONNECT])) {
			socketioServer.on(SIO_TYPE_CONNECT, function() {
				options[SIO_TYPE_CONNECT].call(socketioServer);
			});
		}
		if (options.disconnect && $.isFunction(options.disconnect)) {
			socketioServer.on(SIO_TYPE_DISCONNECT, function() {
				options.disconnect.call(socketioServer);
			});
		}
		// 公共信息
		/*if (options[SIO_TYPE_PUBLIC] && $.isFunction(options[SIO_TYPE_PUBLIC])) {
			socketioServer.on(SIO_TYPE_PUBLIC, function(data, ackServerCallback) { //ackServerCallback为服务器端回调函数
				options[SIO_TYPE_PUBLIC].call(socketioServer, data, ackServerCallback);
			});
		}*/
		
		for(var funName in options){
			if ($.isFunction(options[SIO_TYPE_PUBLIC])) {
				if (funName == SIO_TYPE_CONNECT) { //接入
				} else if (funName == SIO_TYPE_DISCONNECT) { // 断开
				} else if (funName == SIO_TYPE_PUBLIC ) { // 公共信息
					socketioServer.on(SIO_TYPE_PUBLIC, function(data, ackServerCallback) { //ackServerCallback为服务器端回调函数
						options[SIO_TYPE_PUBLIC].call(socketioServer, data, ackServerCallback);
					});
				} else if (funName == SIO_TYPE_PRIVATE ) { // 个人信息
					socketioServer.on(SIO_TYPE_PRIVATE, function(data, ackServerCallback) { //ackServerCallback为服务器端回调函数
						options[SIO_TYPE_PRIVATE].call(socketioServer, data, ackServerCallback);
					});
				} else { // 其他消息
					socketioServer.on(funName, function(data, ackServerCallback) { //ackServerCallback为服务器端回调函数
						options[SIO_TYPE_PUBLIC].call(socketioServer, data, ackServerCallback);
					});
				}
	            
            }
		}
    }
	if (callback && $.isFunction(callback)) {
		callback()
	}
}
